home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / gemfsc18.lzh / AESSRC18.LZH / AESFUNCS / FRMVFMT.C < prev    next >
C/C++ Source or Header  |  1992-04-06  |  1KB  |  55 lines

  1. /**************************************************************************
  2.  * FRMVFMT.C - Allocate a 2k buffer, format text into it with vsprintf().
  3.  *************************************************************************/
  4.  
  5. #include <stdarg.h>
  6. #include "gemfast.h"
  7.  
  8. #ifndef NULL
  9.   #define NULL 0L
  10. #endif
  11.  
  12. static char errmsg[] = "\n"
  13.                        "<Internal error: Can't get buffer to format message>"
  14.                        "\n"
  15.                        ;
  16.  
  17. static char nullmsg[] = "\n"
  18.                         "<Internal error: NULL format pointer>\n"
  19.                         "\n"
  20.                         ;
  21.  
  22. void _FrmVFree(buffer)
  23.     char *buffer;
  24. {
  25.     if (buffer != NULL && buffer != errmsg && buffer != nullmsg) {
  26.         apl_free(buffer);
  27.     }
  28. }
  29.  
  30. char *_FrmVFormat(fmt, args, plen)
  31.     char    *fmt;
  32.     va_list args;
  33.     int     *plen;
  34. {
  35.     char    *buffer;
  36.     int     len;
  37.     
  38.     if (NULL == fmt) {
  39.         buffer = nullmsg;
  40.         len    = -1;
  41.     } else if (NULL == (buffer = apl_malloc(2048L))) {
  42.         buffer = errmsg;
  43.         len    = -1;
  44.     } else {
  45.         len = vsprintf(buffer, fmt, args);
  46.     }
  47.     
  48.     if (plen != NULL) {
  49.         *plen = len;
  50.     }
  51.     
  52.     return buffer;
  53. }
  54.  
  55.